<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of persistenciaReclamo
 *
 * @author Agustin
 */
require_once 'reclamo.php';
require_once 'conexion.php';
require_once 'persistenciaEspecialidad.php';

class PersistenciaReclamo {

    private static $instance = false;

    public static function getInstance() {
        if (!self::$instance instanceof self) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    public function crearReclamo($datos) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "INSERT INTO reclamos (descripcion,calendarizable,tiempoEstimado, idEspecialidad,activado) VALUES('" . $datos[0] . "'," . $datos[1] . "," . $datos[2] . "," . $datos[3] . "," . $datos[4] . ")";
            
            $db->consulta($sentencia);
            return $db->obtenerUltimoID();
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function traerReclamosEspecialidad($numero) {
        try {
            $db = Conexion::getInstance();
            $pE = persistenciaEspecialidad::getInstance();
            $reclamos = array();
            $sentencia = "SELECT * FROM reclamos where activado=0 and idEspecialidad=" . $numero;
            $aux = $db->consulta($sentencia);
            foreach ($aux as $reclamo) {
                $rec = new Reclamo(null);
                $rec->id = $reclamo[0];
                $rec->descripcion = $reclamo[1];
                $rec->calendarizable = $reclamo[2];
                $rec->tiempoEstimado = $reclamo[3];
                $espec = $pE->traerEspecialidades($reclamo[4]);
                $rec->especialidad = $espec;
                $rec->activado = $reclamo[5];
                array_push($reclamos, $rec);
            }
            return $reclamos;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function traerReclamos($numero) {
        try {
            $db = Conexion::getInstance();
            $pE = persistenciaEspecialidad::getInstance();
            $reclamos = array();
            if ($numero == '') {
                $sentencia = "SELECT * FROM reclamos order by idespecialidad";
                $aux = $db->consulta($sentencia);
                foreach ($aux as $reclamo) {
                    $rec = new Reclamo(null);
                    $rec->id = $reclamo[0];
                    $rec->descripcion = $reclamo[1];
                    $rec->calendarizable = $reclamo[2];
                    $rec->tiempoEstimado = $reclamo[3];
                    $espec = $pE->traerEspecialidades($reclamo[4]);
                    $rec->especialidad = $espec;
                    $rec->activado = $reclamo[5];
                    array_push($reclamos, $rec);
                }
            } elseif ($numero == '*') {
                $sentencia = "SELECT * FROM reclamos order by descripcion";
                $aux = $db->consulta($sentencia);
                foreach ($aux as $reclamo) {
                    $rec = new Reclamo(null);
                    $rec->id = $reclamo[0];
                    $rec->descripcion = $reclamo[1];
                    $rec->calendarizable = $reclamo[2];
                    $rec->tiempoEstimado = $reclamo[3];
                    $espec = $pE->traerEspecialidades($reclamo[4]);
                    $rec->especialidad = $espec;
                    $rec->activado = $reclamo[5];
                    array_push($reclamos, $rec);
                }
            } else {
                $sentencia2 = "SELECT * FROM reclamos WHERE idReclamo=" . $numero;
                $aux = $db->consulta($sentencia2);
                $rec = new Reclamo(null);
                if ($aux != null) {
                    $rec->id = $aux[0][0];
                    $rec->descripcion = $aux[0][1];
                    $rec->calendarizable = $aux[0][2];
                    $rec->tiempoEstimado = $aux[0][3];
                    $espec = $pE->traerEspecialidades($aux[0][4]);
                    $rec->especialidad = $espec;
                    $rec->activado = $aux[0][5];
                } else {
                    $rec->especialidad = new especialidad(Array(null, null));
                }

                array_push($reclamos, $rec);
            }

            return $reclamos;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function actualizarReclamo($datos) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "UPDATE reclamos SET calendarizable=" . $datos[1] . ",tiempoEstimado=" . $datos[2] . ", idEspecialidad = " . $datos[3] . ",activado=" . $datos[4] . " WHERE idreclamo=" . $datos[0];
            $db->consulta($sentencia);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function eliminarReclamo($id) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "delete from reclamos where idreclamo=" . $id;
            $db->consulta($sentencia);
            if ($this->traerReclamos($id) != null) {
                return false;
            } else {
                return true;
            }
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function buscarReclamo($desc) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "SELECT * FROM reclamos WHERE descripcion='" . $desc . "'";
            $res = $db->consulta($sentencia);
            if (count($res) >= 1) {
                return true;
            } else {
                return false;
            }
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

}

?>
